//
//  ViewController.swift
//  swift-02-demo2
//
//  Created by China Dragon on 2023/8/22.
//

import UIKit

/*
    纯代码写 tableview
 */
class ViewController: UIViewController {
    
    private lazy var tableview: UITableView = {
        //在实例化 tableview 的时候，指定样式后不能再修改
        let tb = UITableView(frame: CGRectZero, style: UITableView.Style.plain)
        
        //设置数据源
        tb.dataSource = self
        
        //注册可重用 cell, OC 的 写法：[UITableViewCell class], swift 写法：UITableViewCell.self
        tb.register(UITableViewCell.self , forCellReuseIdentifier: "Cell")
        
        return tb
    }()
    
    //用纯代码创建视图层次结构， 和 storyboard \ xib 等价
    override func loadView() {
        //在访问view的时候，如果 view == nil, 会自动调用 loadView
//        print(view)
        
        //设置视图
        view = tableview
        
        
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        print("执行了 viewDidLoad")
    }
}

//将一组代码放在一起，便于管理和维护
extension ViewController: UITableViewDataSource{// 遵守数据源协议，如果有多个协议后面用逗号 ， OC 的写法<UITableViewDataSource>， OC中没有多继承，用协议替代
  /*
    注意：这里两个方法没有 overrider,
   而UITableViewController 里会有 overrider，因为 UITableViewController 已经遵守了协议
   */
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 50
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        //使用此方法，必须注册可重用 cell
        let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
        cell.textLabel?.text = "hello \(indexPath.row)"
        return cell
    }
    
    
}

